Jupyterノートブックプロット

Juptyer ノートで pyvista でインタラクティブにプロット!

Demo Using pythreejs

Create interactive physically based rendering using pythreejs.

import pyvista as pv
from pyvista import examples

# download an example and display it using physically based rendering.
mesh = examples.download_lucy()
mesh.plot(color='lightgrey', pbr=True, metallic=0.2,
          jupyter_backend='pythreejs')

ipygany を使ったデモ

from pyvista import demos

# basic glyphs demo
mesh = demos.glyphs(2)

text = demos.logo.text_3d("I'm interactive!", depth=0.2)
text.points *= 0.1
text.translate([0, 1.4, 1.5])
mesh += text
mesh['Example Scalars'] = mesh.points[:, 0]

mesh.plot(cpos='xy', jupyter_backend='ipygany', show_scalar_bar=True)

panel を使ったデモ

from pyvista import demos
demos.plot_logo(jupyter_backend='panel')

サポートされるモジュール

PyVistaモジュールは,Jupyterノートブック内でプロットする際のさまざまなバックエンドをサポートしています:

  • ipyvtklink を介したノートブックへのPyVistaストリーミングによるサーバ側のレンダリング

  • Client-side rendering with pythreejs using threejs.

  • threejs を使用した ipygany によるクライアント側レンダリング.

  • vtk.js を使用した panel を使用したクライアント側レンダリング.

  • itk.jsvtk.js を使用した itkwidgets によるクライアント側レンダリング.

  • 静止画像.


各バックエンドの詳細

これらの描画バックエンドの使用方法の詳細については,各バックエンドの個々のパッケージページを参照してください.

3 D対話型Jupyterlabプロットの状態

注釈

Jupyterノートブック内の3 Dプロットは,Jupyterがまだ比較的新しい技術であることもありますが,ここで使用されているWeb技術も新しい技術であり,ますます多くのユーザや開発者がクラウドやクラウドベースのビジュアライゼーションに移行しているため,急速に発展しています.ここにあるものは壊れ,急速に変化する可能性が高いです

This was written in March 2021 and updated in August 2021, and may already be out of date. Be sure to check the developer websites for any changes.

Jupyterlabを使用してプロットする場合は,多数のモジュールのいずれかを使用することもできますが,それぞれに長所,短所,および短所があります. pyvistaPlotting クラスを使用するときにAPIの違いのいくつかを取り除こうとしますが,プロットはバックエンドによって異なるように見えます.また,バックエンドが異なると要件も異なり,展開環境をサポートしない場合があります.

次の表に,jupyterノートブックプロットモジュールで使用されるさまざまな機能とテクノロジを示します.

Jupyterノートブック3 Dモジュール

Jupyterlab 3

レンダリングの場所

バックエンド

フレームバッファが必要

panel

Yes

クライアント

vtk.js

Yes

pythreejs

Yes

クライアント

threejs

いいえ

ipygany

Yes

クライアント

threejs

いいえ

ipyvtklink

Yes

サーバ

vtk

Yes

itkwidgets

いいえ

クライアント

vtk.js

Yes

At the moment, itkwidgets and ipyvtklink are incompatible with Jupyterlab 3, and will result in a "Error displaying widget: model not found" message from juptyer. Additionally, all the modules other than ipygany and pythreejs require a framebuffer, which can be setup on a headless environment with pyvista.start_xvfb(). However, on Google Colab, where it's not possible to install system packages, you should stick with a module like threejs, which does not require any server side rendering or framebuffer.

フレームバッファを必要とするバックエンドのためのヘッドレス環境へのインストールの詳細については, インストール を参照してください.個々のパッケージをインストールする場合,簡単な pip install <package> を使用してJupyterlab 3互換パッケージをインストールできます.詳細は,他のパッケージのインストール手順を参照してください.

PyVistaでの使用法

There are two ways to set the jupyter plotting backend. First, it can be done on a plot by plot basis by setting the jupyter_backend parameter in either Plotter.show() or dataset.plot(). You can also set it globally with the pyvista.set_jupyter_backend(). For further details:

set_jupyter_backend(backend)

Jupyterノートブックのプロットバックエンドを設定します.

パラメータ
backendstr

プロット時に使用するJupyterバックエンドです.次のいずれかである必要があります.

  • 'ipyvtklink' : リモートでレンダリングし,結果のVTKイメージをクライアントにストリーミングします.すべてのVTKメソッドをサポートしますが,リモートレンダリングのために遅延が発生します.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります. ipyvtklink がインストールされている必要があります.

  • 'panel' : VTKレンダーウィンドウをvtkjsオブジェクトに変換し,それをjupyterlabで視覚化します.ほとんどのVTKオブジェクトをサポートします.ヘッドレスサーバーで表示する場合は,仮想フレームバッファをセットアップする必要があります. panel がインストールされている必要があります.

  • 'ipygany' : すべてのメッシュを ipygany メッシュに変換し,クライアント側でレンダリングするメッシュをストリーミングします.VTKメッシュをサポートしていますが,他にはほとんどありません. none を除き,これは仮想フレームバッファを必要としない唯一の方法です. ipygany がインストールされている必要があります.

  • 'pythreejs' : Convert all the meshes into pythreejs meshes and streams those to be rendered on the client side. Aside from ipygany, this is the only method that does not require a virtual framebuffer. Must have pythreejs installed.

  • 'static' : Jupyterlab環境内に単一の静的イメージを表示します.ヘッドレスサーバーで表示する場合も仮想フレームバッファをセットアップする必要がありますが,追加のモジュールをインストールする必要はありません.

  • 'none' : jupyterlab内にプロットを表示せず,専用のVTKレンダリングウィンドウを使用して表示します.これは,仮想フレームバッファがあっても,ヘッドレスサーバー上では何も生成しません.

Enable the pythreejs backend.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('pythreejs')  

ipygany バックエンドを有効にします.

>>> import pyvista as pv
>>> pv.set_jupyter_backend('ipygany')  

panelバックエンドを有効にします.

>>> pv.set_jupyter_backend('panel')  

ipyvtklink バックエンドを有効にします.

>>> pv.set_jupyter_backend('ipyvtklink')  

静止画像を表示するだけです.

>>> pv.set_jupyter_backend('static')  

JupyterLab内のすべてのプロットを無効にし,準のデスクトップVTKレンダリングウィンドウを使用して表示します.

>>> pv.set_jupyter_backend(None)  # or 'none'